package com.supermarket.api.config;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 支付宝配置
 * @author 李其伟
 * @date 2023/12/15
 */
@Data
@Configuration
public class AliPayConfig {

    /**
     * 商户appid
     */
    @Value("${aliPay.appId}")
    private String appId;

    /**
     * 请求网关地址
     */
    @Value("${aliPay.gatewayUrl}")
    private String gatewayUrl;

    /**
     * 支付宝公钥
     */
    @Value("${aliPay.aliPayPublicKey}")
    private String aliPayPublicKey;

    /**
     * 私钥 pkcs8格式的
     */
    @Value("${aliPay.appPrivateKey}")
    private String appPrivateKey;

    /**
     * 服务器异步通知页面路径
     * 需http://或者https://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
     */
    @Value("${aliPay.notifyUrl}")
    private String notifyUrl;

    /**
     * 页面跳转同步通知页面路径
     * 需http://或者https://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问 商户可以自定义同步跳转地址
     */
    @Value("${aliPay.returnUrl}")
    private String returnUrl;

    /** 编码 */
    private String charset = "UTF-8";
    /** 返回格式 */
    private String format = "json";
    /** RSA2 */
    private String signType = "RSA2";

    @Bean
    public AlipayClient alipayClient() {
        return new DefaultAlipayClient(gatewayUrl, appId, appPrivateKey, format, charset, aliPayPublicKey, signType);
    }
}
